home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3 (Developer)…68k, x86, SPARC, PA-RISC] / NeXTSTEP 3.3 Dev Intel.iso / NextDeveloper / Headers / bsd / dev / event.h < prev    next >
C/C++ Source or Header  |  1995-02-14  |  8KB  |  226 lines

  1. /******************************************************************************
  2.     event.h (PostScript side version)
  3.     
  4.     CONFIDENTIAL
  5.     Copyright (c) 1988 NeXT, Inc. as an unpublished work.
  6.     All Rights Reserved.
  7.  
  8.     Created Leo 01Mar88
  9.  
  10.     Modified:
  11.     04May88 Leo  Final event types and record
  12.     22Aug88 Leo  Change short -> int for window, add reserved
  13.     26May90 Ted  Added NX_UNDIMMASK to correct triggering of UndoAutoDim
  14.     12Dec91 Mike Brought into sync with dpsclient/event.h, and fixed
  15.              the #ifndef interlock with dpsclient/event.h that was
  16.              broken during the Great Header Revision.
  17.  
  18.     The PostScript version of this file differs from the
  19.     Window Kit version in that the coordinates here are
  20.     ints instead of floats.
  21. ******************************************************************************/
  22.  
  23. #ifndef _DEV_EVENT_
  24. #define _DEV_EVENT_
  25.  
  26. #ifdef EVENT_H        /* Interlock with dpsclient/event.h */
  27. #if !defined(_NXSIZE_)    /* Work around patch for old event.h in Phase 3 projs*/
  28. #define _NXSIZE_    1    /* NXCoord, NXPoint, NXSize decl seen */
  29. #define _NXSize_    NXSize
  30. #endif _NXSIZE_
  31. #else  EVENT_H        /* Haven't seen dpsclient/event.h, so define away */
  32. #define EVENT_H
  33.  
  34. #ifdef    KERNEL
  35. #else    KERNEL
  36.  
  37. #if !defined(_NXSIZE_)    /* Work around patch for old event.h in Phase 3 projs*/
  38. #define _NXSIZE_    1    /* NXCoord, NXPoint, NXSize decl seen */
  39. typedef float   NXCoord;
  40.  
  41. typedef struct _NXPoint {    /* point */
  42.     NXCoord         x, y;
  43. } NXPoint;
  44.  
  45. typedef struct _NXSize {    /* size */
  46.     NXCoord         width, height;
  47. } NXSize;
  48. #define _NXSize_    NXSize    /* Correct usage in event_status_driver.h */
  49. #endif _NXSIZE_
  50.  
  51. #endif    KERNEL
  52.  
  53. /* Event types */
  54.  
  55. #define NX_NULLEVENT        0    /* internal use */
  56.  
  57. /* mouse events */
  58.  
  59. #define NX_LMOUSEDOWN        1    /* left mouse-down event */
  60. #define NX_LMOUSEUP        2    /* left mouse-up event */
  61. #define NX_RMOUSEDOWN        3    /* right mouse-down event */
  62. #define NX_RMOUSEUP        4    /* right mouse-up event */
  63. #define NX_MOUSEMOVED        5    /* mouse-moved event */
  64. #define NX_LMOUSEDRAGGED    6    /* left mouse-dragged event */
  65. #define NX_RMOUSEDRAGGED    7    /* right mouse-dragged event */
  66. #define NX_MOUSEENTERED        8    /* mouse-entered event */
  67. #define NX_MOUSEEXITED        9    /* mouse-exited event */
  68.  
  69. /* keyboard events */
  70.  
  71. #define NX_KEYDOWN        10    /* key-down event */
  72. #define NX_KEYUP        11    /* key-up event */
  73. #define NX_FLAGSCHANGED        12    /* flags-changed event */
  74.  
  75. /* composite events */
  76.  
  77. #define NX_KITDEFINED        13    /* application-kit-defined event */
  78. #define NX_SYSDEFINED        14    /* system-defined event */
  79. #define NX_APPDEFINED        15    /* application-defined event */
  80. /* There are additional DPS client defined events past this point. */
  81.  
  82. #define NX_FIRSTEVENT        0
  83. #define NX_LASTEVENT        15
  84. #define NX_NUMPROCS        (NX_LASTEVENT-NX_FIRSTEVENT+1)
  85.  
  86. /* Event masks */
  87.  
  88. #define NX_LMOUSEDOWNMASK    (1 << NX_LMOUSEDOWN)    /* left mouse-down */
  89. #define NX_LMOUSEUPMASK        (1 << NX_LMOUSEUP)    /* left mouse-up */
  90. #define NX_RMOUSEDOWNMASK    (1 << NX_RMOUSEDOWN)    /* right mouse-down */
  91. #define NX_RMOUSEUPMASK        (1 << NX_RMOUSEUP)    /* right mouse-up */
  92. #define NX_MOUSEMOVEDMASK    (1 << NX_MOUSEMOVED)    /* mouse-moved */
  93. #define NX_LMOUSEDRAGGEDMASK    (1 << NX_LMOUSEDRAGGED)    /* left-dragged */
  94. #define NX_RMOUSEDRAGGEDMASK    (1 << NX_RMOUSEDRAGGED)    /* right-dragged */
  95. #define NX_MOUSEENTEREDMASK    (1 << NX_MOUSEENTERED)    /* mouse-entered */
  96. #define NX_MOUSEEXITEDMASK    (1 << NX_MOUSEEXITED)    /* mouse-exited */
  97. #define NX_KEYDOWNMASK        (1 << NX_KEYDOWN)    /* key-down */
  98. #define NX_KEYUPMASK        (1 << NX_KEYUP)        /* key-up */
  99. #define NX_FLAGSCHANGEDMASK    (1 << NX_FLAGSCHANGED)    /* flags-changed */
  100. #define NX_KITDEFINEDMASK     (1 << NX_WINCHANGED)    /* kit-defined */
  101. #define NX_SYSDEFINEDMASK     (1 << NX_SYSDEFINED)    /* system-defined */
  102. #define NX_APPDEFINEDMASK     (1 << NX_APPDEFINED)    /* app-defined */
  103.  
  104. #define EventCodeMask(type)    (1 << (type))
  105. #define NX_ALLEVENTS        -1    /* Check for all events */
  106.  
  107.  
  108. /* Masks for the bits in event.flags */
  109.  
  110. /* device-independent */
  111.  
  112. #define    NX_ALPHASHIFTMASK    0x00010000
  113. #define    NX_SHIFTMASK        0x00020000
  114. #define    NX_CONTROLMASK        0x00040000
  115. #define    NX_ALTERNATEMASK    0x00080000
  116. #define    NX_COMMANDMASK        0x00100000
  117. #define    NX_NUMERICPADMASK    0x00200000
  118. #define    NX_HELPMASK        0x00400000
  119.  
  120. /* The device dependant flags are defined in <bsd/dev/machine/event.h> */
  121.  
  122. /* 
  123.  * Additional reserved bits in event.flags
  124.  */
  125.  
  126. #define NX_STYLUSPROXIMITYMASK    0x00000080
  127. #define NX_NONCOALSESCEDMASK    0x00000100
  128.  
  129. /* click state values
  130.  * If you have the following events in close succession, the click
  131.  * field has the indicated value:
  132.  *    
  133.  *  Event    Click Value    Comments
  134.  *  mouse-down    1        Not part of any click yet
  135.  *  mouse-up    1        Aha! A click!
  136.  *  mouse-down    2        Doing a double-click
  137.  *  mouse-up    2        It's finished
  138.  *  mouse-down    3        A triple
  139.  *  mouse-up    3
  140.  */
  141.  
  142. /* Values for the character set in event.data.key.charSet */
  143.  
  144. #define    NX_ASCIISET        0
  145. #define NX_SYMBOLSET        1
  146. #define    NX_DINGBATSSET        2
  147.  
  148. /* EventData type: defines the data field of an event */
  149.  
  150. typedef    union {
  151.     struct {    /* For mouse-down and mouse-up events */
  152.     unsigned char    subx;        /* sub-pixel position for x */
  153.     unsigned char    suby;        /* sub-pixel position for y */
  154.     short        eventNum;    /* unique identifier for this button */
  155.     int        click;        /* click state of this event */
  156.         unsigned char    pressure;    /* pressure value: 0=none, 255=full */
  157.     char        reserved1;
  158.     short        reserved2;
  159.     } mouse;
  160.     struct {    /* For key-down and key-up events */
  161.         short    reserved;
  162.     short    repeat;        /* for key-down: nonzero if really a repeat */
  163.     unsigned short charSet;    /* character set code */
  164.     unsigned short charCode;/* character code in that set */
  165.     unsigned short keyCode;    /* device-dependent key number */
  166.     short       keyData;    /* device-dependent info */
  167.     } key;
  168.     struct {    /* For mouse-entered and mouse-exited events */
  169.         short    reserved;
  170.     short    eventNum;    /* unique identifier from mouse down event */
  171.     int    trackingNum;    /* unique identifier from settrackingrect */
  172.     int    userData;   /* uninterpreted integer from settrackingrect */
  173.     } tracking;
  174.     struct {    /* For window-changed, sys-defined, and app-defined events */
  175.         short    reserved;
  176.     short    subType;    /* event subtype for compound events */
  177.     union {
  178.         float    F[2];    /* for use in compound events */
  179.         long    L[2];    /* for use in compound events */
  180.         short    S[4];    /* for use in compound events */
  181.         char    C[8];    /* for use in compound events */
  182.     } misc;
  183.     } compound;
  184. } NXEventData;
  185.  
  186. /* Finally! The event record! */
  187. typedef struct _NXEvent {
  188.     int            type;        /* An event type from above */
  189.     struct {
  190.     int        x, y;        /* Base coordinates in window, */
  191.     }            location;    /* from bottom left */
  192.     long        time;        /* vertical intervals since launch */
  193.     int            flags;        /* key state flags */
  194.     unsigned int    window;        /* window number of assigned window */
  195.     NXEventData        data;        /* type-dependent data */
  196. } NXEvent, *NXEventPtr;
  197.  
  198. /* How to pick window(s) for event (for PostEvent) */
  199. #define NX_NOWINDOW        -1
  200. #define NX_BYTYPE        0
  201. #define NX_BROADCAST        1
  202. #define NX_TOPWINDOW        2
  203. #define NX_FIRSTWINDOW        3
  204. #define NX_MOUSEWINDOW        4
  205. #define NX_NEXTWINDOW        5
  206. #define NX_LASTLEFT        6
  207. #define NX_LASTRIGHT        7
  208. #define NX_LASTKEY        8
  209. #define NX_EXPLICIT        9
  210. #define NX_TRANSMIT        10
  211. #define NX_BYPSCONTEXT        11
  212.  
  213. #endif EVENT_H    /* End of defs common with dpsclient/event.h */
  214.  
  215. /* Mask of events that cause screen to undim */
  216.  
  217. #define NX_UNDIMMASK        (NX_KEYDOWNMASK | NX_KEYUPMASK | \
  218.                  NX_LMOUSEDOWNMASK | NX_LMOUSEUPMASK | \
  219.                  NX_RMOUSEDOWNMASK | NX_RMOUSEUPMASK | \
  220.                  NX_MOUSEMOVEDMASK | NX_FLAGSCHANGEDMASK | \
  221.                  NX_MOUSEENTEREDMASK | NX_MOUSEEXITEDMASK | \
  222.                  NX_LMOUSEDRAGGEDMASK | NX_RMOUSEDRAGGEDMASK)
  223.  
  224. #endif _DEV_EVENT_
  225.  
  226.